package client.common.libs;

import org.stjs.javascript.Array;
import org.stjs.javascript.Map;
import org.stjs.javascript.annotation.GlobalScope;
import org.stjs.javascript.annotation.STJSBridge;

import client.common.Models.IndicadorEstudiantePeriodo;
import client.common.angular.Promise;
import client.common.javascript.JsFunction1;
import client.common.javascript.JsFunction2;
import client.common.javascript.JsProcedure0;
import client.common.javascript.JsProcedure1;

@STJSBridge
@GlobalScope
abstract public class Underscore {
	public static Underscore _;

	// @Template("delete")
	public static void $delete(Object o) {

	}

	public <R, T1, T2> boolean every(Boolean params,
			JsFunction2<R, T1, T2> jsFunction2) {

		return false;
	}

	public <T> Map<String, Array<T>> groupBy(Array<T> indicadoresPeriodo,
			String string) {
		// TODO Auto-generated method stub
		return null;
	}

	public Object assign(Object destination, Object source) {
		// TODO Auto-generated method stub
		return null;
	}

	public <T> void remove(Array<T> lista, JsFunction1<Boolean, T> jsProcedure1) {
		// TODO Auto-generated method stub

	}

	public <T> Map<String, T> indexBy(Array<T> p, String string) {
		// TODO Auto-generated method stub
		return null;
	}

	public <T> void each(Array<T> list, JsProcedure1<T> jsProcedure0) {
		// TODO Auto-generated method stub

	}

	public <T, K> Array<K> map(Array<T> array, String key) {
		// TODO Auto-generated method stub
		return null;
	}

	public <T> void forEach(Array<T> data, JsProcedure1<T> cb) {
		// TODO Auto-generated method stub

	}

	public void sync(JsProcedure0 callback, Promise... promises) {
	}

	public void sync(JsProcedure0 callback,
			Array<? extends Promise>... promises) {
	}

	public <T> Array<T> cloneDeep(Array<T> indicadoresSource) {
		// TODO Auto-generated method stub
		return null;
	}

	public Array<Integer> map(Array<IndicadorEstudiantePeriodo> $get,
			JsFunction1<Integer, IndicadorEstudiantePeriodo> jsFunction1) {
		// TODO Auto-generated method stub
		return null;
	}

	public <T> Array<T> difference(Array<T> indicadoresSource,
			Array<T> indicadoresTarget) {
		// TODO Auto-generated method stub
		return null;
	}

	public <T> Array<T> filter(Array<T> $get,
			JsFunction1<Boolean, T> jsFunction1) {
		// TODO Auto-generated method stub
		return null;
	}

}
